1. Technical Field
The embodiments described herein are related to secure communications, and more particularly, to systems and methods that allow devices to communicate securely on a peer-to-peer basis.
2. Related Art
When two devices are communicating and do not want a third party to listen in, they need to communicate in a way not susceptible to eavesdropping or interception. This is known as communicating in a secure manner or secure communication. Secure communication includes means by which people can share information with varying degrees of certainty that third parties cannot intercept what was said. Often some form of encryption is used to ensure secure communication between devices in a network.
In cryptography, encryption is the process of transforming information (referred to as plaintext) using an algorithm (called a cipher) to make it unreadable to anyone except those possessing special knowledge, usually referred to as a key. The result of the process is encrypted information (in cryptography, referred to as ciphertext). In many contexts, the word encryption also implicitly refers to the reverse process, decryption (e.g. “software for encryption” can typically also perform decryption), to make the encrypted information readable again (i.e. to make it unencrypted).
Encryption, by itself, can protect the confidentiality of messages, but other techniques are still needed to protect the integrity and authenticity of a message; for example, verification of a message authentication code or a digital signature.
Techniques in public-key cryptography have been used to accomplish both functions. Public-key cryptography utilizes asymmetric key algorithms, where the key used to encrypt a message is not the same as the key used to decrypt it. One of the two keys is published (i.e., “the public key”), while the other key is kept secret (“the private key”). The keys are related mathematically such that while it may be possible to derive the public key from the private key (e.g., by calculating its inverse), it is computationally infeasible to derive the private key from the public key. In many cases, these “one-way functions” (the most notable ones being the integer factorization and discrete logarithm problems) have no efficient solution, even when using a high-powered computer. Therefore, publishing the public key does not compromise the integrity of the overall system.
For a given public/private key pair, if the lock/encryption key is the one published then the system enables private communication from the public to the unlocking key's owner (i.e., only the user bearing the private key can unlock the encrypted contents of a message). If the unlock/decryption key is the one published, then the system serves as a signature verifier of documents locked by the owner of the private key (i.e., since only the user bearing the private key can lock/encrypt a message in this manner, and since only that user has access to the private key, this serves as strong evidence that the message is in fact authentic).
A significant problem for use of public-key cryptography is confidence that the public key is in fact authentic, i.e., that it actually belongs to the person or entity that it is purported to belong to, and further, that it has not been tampered with or replaced by a malicious third party. The usual approach to this problem is to use a public-key infrastructure (PKI), in which one or more third parties, known as certificate authorities, certify ownership of key pairs.
FIG. 1 is a block diagram illustrating an exemplary public-key infrastructure as known in the prior art. Party A 102 wishes to communicate with Party B 104, and receives a public key purportedly from Party B 104. Party A 102 can now verify that this public key is in fact the public key associated with Party B 104 using certificate authority (CA) 106. If CA 106 issues a certificate 108, then Party A can assume the public key does in fact belong to that of Party B 104 and not to a malicious third party, for instance.
Use of such third party infrastructure, however, substantially raises the costs and overhead of secure communications and practically makes it inaccessible to the general public unless they are part of a corporation or other entity that uses encryption, or they make significant personal investment to gain access to secure communication software. Even in such cases, there is still no guarantee the target recipient has made a similar investment in using the same system as the sender.
What is needed are systems and methods for secure peer-to-peer communication capable of authenticating a remote device, yet without the use of a PKI certificate, and more generally, without requiring involvement from any outside parties. Ideally, such a system would enable a sender to attach time, place, and/or device restrictions on a message, as well as to recall messages already transmitted to a recipient.